"""项目配置文件"""

import logging
import redis
from app.constants import SECRET_CODE_KEY


class Config(object):
    DEBUG = True

    # mysql数据库配置信息
    SQLALCHEMY_DATABASE_URI = 'mysql://root:mysql@localhost:3306/info19'
    # 如果设置成True,则SQLAlchemy将会追踪对象的修改并发送信号,若不必要则可禁用
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    # 当数据库回话对象(应该是request)结束时自动提交更新的数据到数据库,可替代db.session.commit()
    SQLALCHEMY_COMMIT_ON_TEARDOWN = True
    # 配置输出sql语句,若设置成True,则SQLAlchemy将会记录所有发到标准输出(stderr)的语句,这对调式很有帮助
    # SQLALCHEMY_ECHO = True

    # redis配置信息
    REDIS_HOST = 'localhost'
    REDIS_PORT = 6379
    # 指定redis 9号数据库
    REDIS_NUM = 9

    # session加密
    SECRET_KEY = SECRET_CODE_KEY
    # flask_session 的配置信息----->将session数据保存到redis中
    SESSION_TYPE = "redis"  # 指定session保存到redis中
    SESSION_USE_SIGNER = True  # 对发送到浏览器上session的cookie值中的session_id被加密签名处理
    SESSION_REDIS = redis.StrictRedis(host=REDIS_HOST, port=REDIS_PORT)  # 使用redis的实例
    SESSION_PERMANENT = False  # 关闭永久存储,这里应该只是关闭redis的永久存储,(如果设置为True则关闭浏览器session就失效?)确认一波 TODO SESSION_PERMANENT
    PERMANENT_SESSION_LIFETIME = 86400  # session的有效期,单位秒

    # 默认日志等级
    LOG_LEVEl = logging.DEBUG


class Development(Config):
    """开发模式下的配置"""
    # 开启调试模式
    DEBUG = True

    # 开发模式下的日志级别:DEBUG
    LOG_LEVEl = logging.DEBUG


class ProductionConfig(Config):
    """生产模式"""
    LOG_LEVEl = logging.WARNING


config_dict = {
    'development': Development,
    'production': ProductionConfig
}
